#! python3
# -*- coding: UTF-8 -*-
# @Time    : 2025/05/26
# @Author  : AndrewWay
# @version : 1.0
# @notes   ：
import random
import time

from scripts.wechat.base import Base
from common.db import DB

"""
需求1（已完成）：
监控群聊1中群主的所有发言，并完成机器人消息的推送
需求2（已完成）：
监控群聊2中群主说了某些关键词，一旦触发，机器人就要推送消息预警
需求3（已完成）：
监控特定好友的发言，一旦收到特定好友的消息，机器人就推送消息预警
"""
"""
操作方法：
程序已经实现了打开对应聊天窗口的功能，不过为了最大程度降低微信的风控，最好手动打开指定的聊天窗口，
然后再运行程序，程序一旦运行之后，就不可以用鼠标或者键盘来操作电脑，不然会影响消息的监控，程序运行过程中会一直切换不同的聊天窗口，这是为了获取聊天的消息。
程序启动之后会一直运行，除非手动停止程序
"""

class WeChatAutoMonitor:
    def __init__(self):
        self.db: DB = DB()


def start(monitor_obj_list, keyword_list, target_user_list, group_name1, group_name2):
    Base().start(monitor_obj_list, keyword_list, target_user_list, group_name1, group_name2)


if __name__ == '__main__':
    while True:
        # 关键词列表，此处输入要监控的关键词
        keyword_list = ['测试', '录制', '识别', '截图']
        # 监控对象列表
        monitor_obj_list = [
            {'测试群01': '群主1'},  # 群主1，监控所有的发言，以字典键值对的方式来表示，{k:v}，k表示群聊名称，v表示群主的昵称，k需要与下面的group_name1一一对应
            {'测试群02': '群主2'},  # 群主2，监控触发关键词的发言，以字典键值对的方式来表示，{k:v}，k表示群聊名称，v表示群主的昵称，k需要与下面的group_name2一一对应
            '自己01',  # 监控特定好友的发言，此处的好友昵称需要与下面的target_user_list对应上，监控监控好友对象需要以字符串的形式添加
        ]
        # 监控好友对象列表，此处输入好友昵称
        target_user_list = ['自己01']
        group_name1 = '测试群01'
        group_name2 = '测试群02'
        start(monitor_obj_list, keyword_list, target_user_list, group_name1, group_name2)
        time.sleep(random.randint(5, 10))
